from pathlib import Path
import shutil
import random

#生成26个小写字母列表
lc=[chr(x) for x in range(97,123)]
#判断a目录是否存在，存在则删除
if Path('a').exists():
    shutil.rmtree(Path('a'))
#递归创建目录
Path('a/b/c/d').mkdir(parents=True)

#定义创建随机文件函数
def touch_file(path,num):
    if path.exists:
        for i in range(num):
            filename=''.join(random.choices(lc,k=4))
            (path/filename).touch()
    else:
        return 'path not exist.'
    
#定义copytree ignore函数
def ignore(src,names):
    ig=filter(lambda name:not (Path(src,name).is_dir() or name.startswith('x') or name.startswith('y') or name.startswith('z')),names)
    return set(ig)

#调用函数生成随机文件
touch_file(Path('a/b/c/d'),50)
for p in Path('a/b/c/d').parents:
    if p!=Path('.'):
        touch_file(p,50)

#判断dst目录是否存在，存在则删除
if Path('dst').exists():
    shutil.rmtree(Path('dst'))
#把a目录内文件复制到dst目录
shutil.copytree(Path('a'),Path('dst'),ignore=ignore)
#验证dst目录文件
print('验证dst目录文件：')
print(list(Path('dst').rglob('*')))


# 做得不错
